package object;

public class IntegerDemo {
    public static void main(String[] args) {
        Integer i1 = new Integer(5);
        Integer i2 = new Integer(5);
        System.out.println(i1==i2);//false 引用类型==比较地址
        System.out.println(i1.equals(i2));//true 包装类自带重写

        //valueOf()方法会复用1个字节(-128到127)范围内的数据，建议使用valueOf(),
        // 俩者功能一样，但下面的能减少内存消耗，比上面的好使
        //>127生成新的对象,<=127存储在常量池中，再生成<=127的常量时直接复用常量池里的
        Integer i3 = Integer.valueOf(5);
        Integer i4 = Integer.valueOf(5);
        System.out.println(i3==i4);//false
        System.out.println(i3.equals(i4));//true

        //将包装类转换为基本类型
        int i = i4.intValue();
        System.out.println(i);

        //演示包装类的常用操作:
        //1)可以通过包装类来获取基本类型的取值范围:
        int max = Integer.MAX_VALUE;
        int min = Integer.MIN_VALUE;
        System.out.println("int的最大值为"+max+"，最小值为"+min);
        long max1 = Long.MAX_VALUE;
        long min1 = Long.MIN_VALUE;
        System.out.println("long的最大值为"+max1+"，最小值为"+min1);

        //2)包装类可以将字符串转换为对应的基本类型----必须熟练掌握
        String s1 = "39";
        int age = Integer.parseInt(s1);//将字符串s1转换成int类型并赋值给age
        System.out.println(age); //39----int类型
        String s2 = "123.4560";
        double price = Double.parseDouble(s2);//将字符串转换成double类型并赋值给price
        System.out.println(price);//123.4560-----double类型

        //自动包装箱
        //触发了自动装箱特性，会被编译为:Integer integer = Integer.valueOf(5);
        Integer integer = 5;//基本类型到包装类-------装箱
        //触发了自动拆箱特性，会被编译为: int j = integer.intValue();
        int j = integer;//包装类到基本类型-----------拆箱
























       /* int max = Integer.MAX_VALUE;
        int min = Integer.MIN_VALUE;
        System.out.println("int的最大值是"+max+",最小值是"+min);
        long max1 = Long.MAX_VALUE;
        long min1 = Long.MIN_VALUE;
        System.out.println("long的最大值是"+max1+",最小值是"+min);
        //包装类可以将字符串转换为对应的基本类型---必须掌握
        String s1 = "12";
        int age = Integer.parseInt(s1);//将字符串s1转换为int类型并赋值给age
        System.out.println(age);
        String s2 = "123.456";
        double price = Double.parseDouble(s2);//将字符串s2转换为double类型并赋值给price
        System.out.println(price);*/

       /* //触发了自动装箱特性，会被编译为：Integer i = Integer.valueOf(5);
        Integer i = 5;//基本类型到包装类------装箱
        //触发了自动装箱特性，会被编译为：int j = i.intvalue(i);
        int j = i;
        Integer q = 10;
        int k = q;
*/
        /*    Integer i1 = new Integer(5);
            Integer i2 = new Integer(5);
        System.out.println(i1==i2);//false
        System.out.println(i1.equals(i2));//true
        //valueOf()方法会复用1个字节（-128到127）范围内的数据，建议使用valueOf()
        Integer i3 = Integer.valueOf(5);
        Integer i4 = Integer.valueOf(5);
        System.out.println(i3==i4);//false
        System.out.println(i3.equals(i4));//true
        //将包装类转换为基本类型
        int i = i4.intValue();
        System.out.println(i);*/
    }
}
